package cn.com.pansky.action.homePage;

import java.io.File;

import net.vsame.url2sql.action.CommonAction;
import cn.com.pansky.action.logs.Log;
import cn.com.pansky.sdk.API;
import cn.com.pansky.util.ImageBinaryUtil;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 我要领取待遇
 * @author Administrator
 *
 */
public class ReceivePayAction extends CommonAction {
	private Log log = new Log();
	
	/**
	 * 根据姓名，身份证获取个人账户信息
	 */
	public void receive(){
		//根据姓名，身份证号返回账户建立年月，本金，利息，个人账户余额，实际缴费年限
		JSONObject param = new JSONObject();
		param.put("AAA121", "QAC50"); // 标识
		param.put("AAC002", getCA006ByCA001()); // 身份证号
		String userId = user.getString("AA001");
		param.put("AAE011", userId);
		JSONObject object = API.sendController("accountQueryController.json",param);
		if(object.getBoolean("SUCCESS")) {
			JSONObject o = JSONObject.parseObject(object.getString("MSG"));
			datas.put("AAE206", o.getString("AAE206")); // 账户建立年月
			datas.put("AAE238", o.getString("AAE238")); // 本金
			datas.put("AAE239", o.getString("AAE239")); // 利息
			datas.put("AAE240", o.getString("AAE240")); // 账户余额
			int months = Integer.parseInt(o.getString("AAE379")); // 实际缴费年限
			if(months%12 == 0) {
				datas.put("AAE379", months/12+"年"); // 实际缴费年限
			} else {
				datas.put("AAE379",months/12+"年"+months%12+"个月");
			}
		}else{
			datas.put("AAE206", ""); // 账户建立年月
			datas.put("AAE238", ""); // 本金
			datas.put("AAE239", ""); // 利息
			datas.put("AAE240", 0); // 账户余额
			datas.put("AAE379", 0+"年"); // 实际缴费年限
		}
		
		//根据姓名和身份证判断该用户是否到龄并满15年用户
		JSONObject params = new JSONObject();
		params.put("AAA121", "CE10000"); // 标识
		params.put("AAC002", getCA006ByCA001()); // 身份证号
		param.put("AAE011", userId);
		JSONObject o = API.sendController("checkTreatmentController.json",params);
		JSONObject obj = o.getJSONObject("MSG");
		// FLAG=1：可以领取，否则FLAG=0,2不可以
		datas.put("isRetired", obj.getString("FLAG"));
		datas.put("info", obj.getString("MSGINFO"));
		context.getDatas().put("result", datas);
	}
	
	/**
	 * 申请待遇
	 */
	public void applyPay(){
		String CA001 = getParam("CA001");
		//日志记录start
		String AF001 = log.start(CA001, "LQ");
		
		String cardImgPath = getParam("BIC106");  //身份证图片 正面
		String familyImgPath = getParam("BIC105"); //户口本图片
		String faceImgPath = getParam("BIC107"); //刷脸图片
		// 调用核心业务系统，将申请信息传入，返回申请成功或失败
		JSONObject param = new JSONObject();
		param.put("AAA121", "E10000");
		param.put("AAC002", getCA006ByCA001()); //身份证号
		param.put("AAE006", getParam("address")); //常住地址
		param.put("AAE005", getParam("telphone")); //联系电话
		param.put("AAE009", getParam("bankName")); //户名
		param.put("AAE010", getParam("bankNo")); //账号
		param.put("AAZ065", getParam("bankType")); //银行类别
		param.put("BIC104", ImageBinaryUtil.getImageBinary(cardImgPath));
		param.put("BIC105", ImageBinaryUtil.getImageBinary(familyImgPath));
		param.put("BIC107", ImageBinaryUtil.getImageBinary(faceImgPath));
		File cardImg = new File(cardImgPath);
		cardImg.delete();
		File familyImg = new File(familyImgPath);
		familyImg.delete();
		File faceImg = new File(faceImgPath);
		faceImg.delete();
		String userId = user.getString("AA001");
		param.put("AAE011", userId);
		JSONObject object = API.sendController("treatmentController.json",param);
		datas.put("isPass", object.getBooleanValue("SUCCESS"));
		datas.put("info", object.getString("MSG"));

		//日志记录end
		boolean result = log.end(AF001, datas.get("isPass"), datas.get("info"));
		System.out.println("日志：申请待遇"+result);
				
		context.getDatas().put("result", datas);
	}
	
	/**
	 * 缴费明细
	 */
	public void payDetail() {
		// 调用业务系统接口，根据姓名，身份证号获取缴费明细信息
		// 返回：年度，类型，缴费金额，省财补助，市财补助，县财补助，到账年月
		JSONObject param = new JSONObject();
		param.put("AAA121", "QAC43"); // 标识
		param.put("AAC002", getCA006ByCA001()); // 身份证号
		String userId = user.getString("AA001");
		param.put("AAE011", userId);
		JSONObject object = API.sendController("payDetailController.json",param);
		if(object.getBooleanValue("SUCCESS")) {
			JSONArray array = object.getJSONArray("MSG");
			String flag = "";
			JSONArray map = new JSONArray();
			for(int i = 0; i < array.size(); i++) {
				JSONObject p = new JSONObject();
				JSONObject ob = JSONObject.parseObject(array.get(i).toString());
				String aae003 = ob.getString("AAE003"); // 年度
				if(!flag.equals(aae003)) {
					for(int j = 0; j < array.size(); j++) {
						JSONObject ob1 = JSONObject.parseObject(array.get(j).toString());
						String aae341 = ob1.getString("AAE341");
						String year = ob1.getString("AAE003");
						
						flag = aae003;
						if(flag.equals(year)) {
							
							if(aae341.equals("1")) {
								p.put("AAE003", aae003); // 年度
								p.put("AAA115", ob1.getString("AAA115")); // 类型
								p.put("AAE079", ob1.getString("AAE079")); // 到账年月
							}
//							Double sum = 0.0;
//							sum = sum + Double.parseDouble(ob1.getString("AAE023"));
							switch(Integer.parseInt(aae341)){
							/**
							 *  AAE341	1	个人缴费
								AAE341	2	中央财政补贴
								AAE341	3	省级财政补贴
								AAE341	4	市级财政补贴
								AAE341	5	县级财政补贴
								AAE341	6	集体补助
								AAE341	7	其他资助
								AAE341	8	被征地保障费
								AAE341	9	异地转入
								AAE341	10	老农保账户金
								AAE341	11	残疾人补助
								AAE341	12	村干部补助
								AAE341	13	计生户补助
							 */
							case 1:p.put("AAE0231", ob1.getString("AAE023")); // 个人缴费
							break;
							case 2:p.put("AAE0232", ob1.getString("AAE023")); // 中央财政补助
							break;
							case 3:p.put("AAE0233", ob1.getString("AAE023")); // 省级财政补助
							break;
							case 4:p.put("AAE0234", ob1.getString("AAE023")); // 市级财政补助
							break;
							case 5:p.put("AAE0235", ob1.getString("AAE023")); // 县级财政补贴
							break;
							case 6:p.put("AAE0236", ob1.getString("AAE023")); // 集体补助
							break;
							case 7:p.put("AAE0237", ob1.getString("AAE023")); // 其他资助
							break;
							case 8:p.put("AAE0238", ob1.getString("AAE023")); // 被征地保障费
							break;
							case 9:p.put("AAE0239", ob1.getString("AAE023")); // 异地转入
							break;
							case 10:p.put("AAE02310", ob1.getString("AAE023")); // 老农保账户金
							break;
							case 11:p.put("AAE02311", ob1.getString("AAE023")); // 残疾人补助
							break;
							case 12:p.put("AAE02312", ob1.getString("AAE023")); // 村干部补助
							break;
							case 13:p.put("AAE02313", ob1.getString("AAE023")); // 计生户补助
							break;
							}
						}
					}
				}
				
				Double sum = 0.00;
				for(int j=1;j<=13;j++){
					String str = p.getString("AAE023"+j);
					if ("".equals(str) || null == str) {
						continue;
					}else{
						sum+=Double.parseDouble(str);
					}
					
				}
				p.put("sum", sum);
				
				if(p.getString("AAE003") != null && !p.getString("AAE003").equals("")) {
					map.add(p);
				}
			}
			
			if (map.size()>0) {
				
				context.put("result", JSON.parseArray(map.toString()));
			}else{
				context.put("result", new JSONArray());
			}
		}else{
			context.put("result", new JSONArray());
		}
	}
	public static void main(String[] args) { 
		JSONObject param = new JSONObject();
		param.put("AAA121", "QAC43"); // 标识
		param.put("AAC002", "610302195611050521"); // 身份证号
		param.put("AAE011", "069dca14-02d2-4cf9-a460-81123b2d772a");
		JSONObject object = API.sendController("payDetailController.json",param);
		if(object.getBooleanValue("SUCCESS")) {
			JSONArray array = object.getJSONArray("MSG");
			String flag = "";
			JSONArray map = new JSONArray();
			for(int i = 0; i < array.size(); i++) {
				JSONObject p = new JSONObject();
				JSONObject ob = JSONObject.parseObject(array.get(i).toString());
				String aae003 = ob.getString("AAE003"); // 年度
				if(!flag.equals(aae003)) {
					for(int j = 0; j < array.size(); j++) {
						JSONObject ob1 = JSONObject.parseObject(array.get(j).toString());
						String aae341 = ob1.getString("AAE341");
						String year = ob1.getString("AAE003");
						
						flag = aae003;
						if(flag.equals(year)) {
							
							if(aae341.equals("1")) {
								p.put("AAE003", aae003); // 年度
								p.put("AAA115", ob1.getString("AAA115")); // 类型
								p.put("AAE079", ob1.getString("AAE079")); // 到账年月
							}
//							Double sum = 0.0;
//							sum = sum + Double.parseDouble(ob1.getString("AAE023"));
							switch(Integer.parseInt(aae341)){
							/**
							 *  AAE341	1	个人缴费
								AAE341	2	中央财政补贴
								AAE341	3	省级财政补贴
								AAE341	4	市级财政补贴
								AAE341	5	县级财政补贴
								AAE341	6	集体补助
								AAE341	7	其他资助
								AAE341	8	被征地保障费
								AAE341	9	异地转入
								AAE341	10	老农保账户金
								AAE341	11	残疾人补助
								AAE341	12	村干部补助
								AAE341	13	计生户补助
							 */
							case 1:p.put("AAE0231", ob1.getString("AAE023")); // 个人缴费
							break;
							case 2:p.put("AAE0232", ob1.getString("AAE023")); // 中央财政补助
							break;
							case 3:p.put("AAE0233", ob1.getString("AAE023")); // 省级财政补助
							break;
							case 4:p.put("AAE0234", ob1.getString("AAE023")); // 市级财政补助
							break;
							case 5:p.put("AAE0235", ob1.getString("AAE023")); // 县级财政补贴
							break;
							case 6:p.put("AAE0236", ob1.getString("AAE023")); // 集体补助
							break;
							case 7:p.put("AAE0237", ob1.getString("AAE023")); // 其他资助
							break;
							case 8:p.put("AAE0238", ob1.getString("AAE023")); // 被征地保障费
							break;
							case 9:p.put("AAE0239", ob1.getString("AAE023")); // 异地转入
							break;
							case 10:p.put("AAE02310", ob1.getString("AAE023")); // 老农保账户金
							break;
							case 11:p.put("AAE02311", ob1.getString("AAE023")); // 残疾人补助
							break;
							case 12:p.put("AAE02312", ob1.getString("AAE023")); // 村干部补助
							break;
							case 13:p.put("AAE02313", ob1.getString("AAE023")); // 计生户补助
							break;
							}
						}
					}
				}
				
				Double sum = 0.00;
				
				for(int j=1;j<=13;j++){
					String str = p.getString("AAE023"+j);
					System.out.println(j+"====="+str);
					if ("".equals(str) || null == str) {
						continue;
					}else{
						sum+=Double.parseDouble(str);
					}
					
				}
				
				p.put("sum", sum);
				
				if(p.getString("AAE003") != null && !p.getString("AAE003").equals("")) {
					map.add(p);
				}
			}
			
			if (map.size()>0) {
				System.out.println(JSON.parseArray(map.toString()));
			}else{
//				context.put("result", new JSONArray());
			}
		}
	}
}
